package com.ellwood.copyright.common.core.utils;

import cn.hutool.core.codec.Base64;

/**
 * @ProjectName: ell-copyright-pro
 * @PackageName: com.ellwood.copyright.common.core.utils
 * @ClassName: Base64CustomUtil
 * @Description: // 自定义 Base64 编码工具类，用于去掉编码结果中的补齐字符 '='。
 *                                          注意：去掉 '=' 可能导致部分场景下的兼容性问题，需要正确补齐解码。
 * @Author: Ellwood
 * @CreateDate: 2024/11/23 - 14:40
 * @Version: V1.0.0
 */
public class Base64CustomUtil {

    /**
     * 对字节数组进行 Base64 编码，并去掉编码结果中的 '=' 补齐字符。
     * @param data 要编码的字节数组
     * @return 去掉 '=' 的 Base64 编码字符串
     */
     public static String encodeWithoutPadding(byte[] data){
         // 调用 Hutool 提供的 Base64 编码方法，并移除结果中的 '='
         return Base64.encode(data).replaceAll("=", "");
     }

    /**
     * 解码去掉 '=' 的 Base64 字符串，自动补齐所需的 '='。
     * @param base64Str 去掉 '=' 的 Base64 编码字符串
     * @return 解码后的字节数组
     */
     public static byte[] decodeWithoutPadding(String base64Str){
         // 计算需要补齐的 '=' 数量
         int paddingCount = (4 - base64Str.length() % 4) % 4;

         // 补齐 '='，确保 Base64 字符串长度是 4 的倍数
         String paddedBase64 = base64Str + "=".repeat(paddingCount);

         // 调用 Hutool 提供的 Base64 解码方法
         return Base64.decode(paddedBase64);
     }

}